package com.mqtt.model;

import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;

/**
 * 设备会话
 */
@Data
public class DeviceSession implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 会话ID
     */
    private String sessionId;
    
    /**
     * 设备ID
     */
    private String deviceId;
    
    /**
     * 设备类型
     */
    private String deviceType;
    
    /**
     * 客户端ID
     */
    private String clientId;
    
    /**
     * 版本号
     */
    private String version;
    
    /**
     * IP地址
     */
    private String ipAddress;
    
    /**
     * 连接时间
     */
    private Date connectTime;
    
    /**
     * 最后活跃时间
     */
    private Date lastActiveTime;
    
    /**
     * 最后心跳时间
     */
    private Date lastHeartbeatTime;
    
    /**
     * 状态
     */
    private String status;
    
    /**
     * 最后接收的主题
     */
    private String lastTopic;
    
    /**
     * 订阅的主题列表
     */
    private String[] subscribedTopics;
    
    /**
     * 会话属性
     */
    private Map<String, Object> attributes;
    
    /**
     * 消息统计
     */
    private MessageStatistics statistics;
    
    /**
     * 消息统计内部类
     */
    @Data
    public static class MessageStatistics {
        private long totalReceived;
        private long totalSent;
        private long totalErrors;
        private Date lastMessageTime;
    }
}